1.19. ПО и система
ПО и система
★ Программа – последовательность команд, которые заставляют компьютер делать то, что нужно пользователю. И как раз процесс подготовки и составления таких команд называется программированием, а людей, занимающихся этим, называют программистами.
Сейчас мы с вами пробежимся по ключевым понятиям, которые нужно знать. Но непосредственно учиться программированию будем в следующем томе, к примеру, там же и изучим особенности термина «алгоритм». Сейчас же следует запомнить, что программа выполняет алгоритмы - серию команд.
★ Программное обеспечение (ПО) – совокупность программ, библиотек и данных для решения задач. Если программа лишь набор инструкций, то ПО может быть пакетом, к примеру:
- Системное ПО: ОС (Windows, Linux), драйверы;
- Прикладное ПО: Microsoft Office;
- Инструментальное ПО: IDE (Visual Studio).
★ Система — это набор компонентов, словно целостный организм, где каждый элемент взаимодействует с другими для достижения общей цели. В отличие от ПО, система включает в себя не только технические составляющие, но и людей, процессы, и даже физическую инфраструктуру. Примером может служить банковская система, которая объединяет ПО (например, системы кредитного конвейера, учёта транзакций), аппаратное обеспечение (серверы, терминалы), сотрудников (операторов, аналитиков) и регламенты (правила безопасности, протоколы работы). Таким образом, ПО - лишь часть системы, а программа - ещё более мелкий элемент, который выполняет задачу:
Система > ПО > программа.
Системное ПО
★ Системное программное обеспечение — набор программ, обеспечивающих базовое функционирование компьютера и предоставляющих платформу для запуска других приложений. Системное ПО работает «под капотом», часто незаметно для пользователя, но без него ничего бы не работало.
Основные компоненты системного ПО:
Операционная система (ОС)
Ядро всей системы. Она управляет:
- процессором (распределение времени между задачами),
- памятью (выделение и защита областей),
- устройствами (через драйверы),
- файлами (организация хранения и доступа),
- безопасностью (пользователи, права, изоляция).
Примеры: Windows 11, Ubuntu, macOS, Android.
Драйверы устройств
Специализированные программы, которые «переводят» команды операционной системы на язык конкретного оборудования. Без драйвера видеокарта не выведет изображение, принтер не напечатает, Wi-Fi модуль не подключится к сети. Драйверы работают на уровне ядра или в режиме пользователя (в зависимости от архитектуры ОС).
Службы и демоны
Фоновые процессы, обеспечивающие непрерывную работу системы:
- служба обновлений — проверяет и устанавливает патчи,
- служба времени — синхронизирует часы с сервером,
- демон печати — управляет очередью заданий,
systemdв Linux — координирует запуск всех остальных служб.
Утилиты системного уровня
Программы для администрирования и диагностики:
diskpart/fdisk— управление разделами диска,taskmgr/htop— мониторинг процессов и ресурсов,sfc/fsck— проверка целостности системных файлов.
Системное ПО — фундамент. Оно создаёт единое пространство, в котором могут сосуществовать прикладные программы, не зная друг о друге напрямую. Оно отвечает за справедливость, порядок и ресурсы.
Прикладное ПО
★ Прикладное программное обеспечение — программы, созданные для решения конкретных задач пользователя. Это те инструменты, с которыми человек взаимодействует напрямую: редактирует текст, смотрит видео, общается, учится, управляет финансами.
Прикладное ПО делится на категории по назначению:
Офисные приложения
Работа с документами:
- текстовые процессоры (Microsoft Word, LibreOffice Writer),
- табличные редакторы (Excel, Google Sheets),
- программы для презентаций (PowerPoint, Impress).
Мультимедиа
Работа со звуком, видео, изображениями:
- проигрыватели (VLC, MPC-HC),
- редакторы (Photoshop, DaVinci Resolve, Audacity),
- конвертеры форматов.
Коммуникации
Обмен информацией между людьми:
- мессенджеры (Telegram, WhatsApp Desktop),
- почтовые клиенты (Outlook, Thunderbird),
- видеоконференции (Zoom, Jitsi).
Интернет-навигация
Доступ к веб-ресурсам:
- браузеры (Chrome, Firefox, Edge),
- RSS-агрегаторы,
- загрузчики файлов.
Образование и наука
Обучение, моделирование, расчёты:
- среды программирования для обучения (Scratch, Thonny),
- симуляторы (логические схемы, физические эксперименты),
- визуализаторы данных (Tableau Public, Grafana).
Бизнес-приложения
Учёт, планирование, управление:
- CRM-системы (1C:CRM, Bitrix24),
- бухгалтерия (1C:Бухгалтерия, Контур.Бухгалтерия),
- ERP-системы (SAP, Oracle E-Business Suite).
В отличие от системного ПО, прикладное ПО:
- ориентировано на конечную цель (написать отчёт, отредактировать фото),
- имеет развитый пользовательский интерфейс,
- часто работает через API других систем (например, облачных сервисов),
- может быть как локальным (установленным на компьютере), так и веб-приложением.
Прикладное ПО — это мост между человеком и машиной. Оно превращает абстрактные возможности компьютера в полезные действия.
Инструментальное ПО
★ Инструментальное программное обеспечение — программы, предназначенные для создания, отладки, тестирования, анализа и поддержки других программ. Это «инструменты для строителей», а не «дома для жильцов».
Основные виды инструментального ПО:
Интегрированные среды разработки (IDE)
Комплексные платформы, объединяющие:
- редактор кода с подсветкой синтаксиса и автодополнением,
- компилятор/интерпретатор,
- отладчик (позволяет пошагово выполнять код, ставить точки останова),
- систему управления версиями (встроенная поддержка Git),
- средства сборки и тестирования.
Примеры: Visual Studio, IntelliJ IDEA, PyCharm, Eclipse.
Текстовые редакторы для программистов
Лёгкие альтернативы IDE, с возможностью расширения:
- Visual Studio Code,
- Sublime Text,
- Vim,
- Emacs.
Системы сборки
Автоматизируют процесс компиляции, связывания, тестирования:
- Make (классический инструмент для C/C++),
- CMake (генератор make-файлов для разных платформ),
- Maven, Gradle (для Java),
- MSBuild (.NET).
Отладчики
Специализированные утилиты для поиска ошибок:
- GDB (GNU Debugger) — для низкоуровневой отладки на Linux,
- WinDbg — мощный отладчик для Windows,
pdb— встроенный отладчик в Python.
Профилировщики
Анализируют производительность программы:
- какие функции тратят больше всего времени (
time,cProfile), - где происходят утечки памяти (
Valgrind,AddressSanitizer), - как используется процессор и кэш (
perf, Intel VTune).
Генераторы кода и шаблонизаторы
Автоматически создают заготовки программ:
yeoman— для веб-проектов,dotnet new— для .NET,create-react-app(устаревший, но показательный пример).
Средства документирования
Преобразуют комментарии в коде в структурированную документацию:
- Javadoc (Java),
- Doxygen (мультиязычный),
- Sphinx (Python, Markdown/RST).
Инструментальное ПО редко используется конечными пользователями. Его аудитория — разработчики, тестировщики, DevOps-инженеры. Чем выше качество инструментов, тем быстрее и надёжнее создаются прикладные программы.
Информационная система
Понятие информационной системы
★ Информационная система – система для сбора, хранения и обработки данных. В отличие от простого вычисления, здесь будет целый процесс работы с информацией. Самый простой пример – Госуслуги, крупная информационная система, включающая в себя огромную совокупность элементов, упорядоченных в инфраструктуре. Это частный случай системы, ориентированный на работу с информацией, охватывающая все этапы её жизненного цикла: сбор, хранение, обработку, анализ и распространение.
Инфраструктура
★ Инфраструктура — совокупность физических и логических компонентов, обеспечивающих функционирование программ, систем и сервисов. Это не просто «серверы и кабели», а целостная экосистема, включающая оборудование, программное обеспечение, сети, процессы и даже человеческие практики.
Инфраструктура делится на уровни:
Физическая инфраструктура
Базовый слой — «железо» и его окружение:
- серверы, дисковые массивы (SAN/NAS), сетевые коммутаторы и маршрутизаторы;
- системы охлаждения, бесперебойного питания (ИБП), пожаротушения;
- дата-центры — здания, спроектированные под размещение оборудования: с контролем доступа, резервированием вводов электропитания, экранированием от помех.
Сетевая инфраструктура
Обеспечивает связь между компонентами:
- локальные сети (LAN), широкие сети (WAN), межсетевые экраны (firewalls);
- системы балансировки нагрузки (Nginx, HAProxy, F5);
- DNS-серверы, DHCP-серверы, системы мониторинга трафика (Wireshark, Zabbix).
Программная инфраструктура
Слои, построенные поверх аппаратуры:
- гипервизоры (VMware ESXi, KVM, Hyper-V) для виртуализации;
- контейнерные платформы (Docker, containerd);
- оркестраторы (Kubernetes, Nomad);
- системы конфигурации и развёртывания (Ansible, Terraform, Puppet).
Операционная инфраструктура
Сервисы и практики управления:
- системы мониторинга (Prometheus + Grafana, Datadog);
- логирование (ELK-стек: Elasticsearch, Logstash, Kibana);
- централизованная аутентификация (LDAP, Active Directory, Keycloak);
- CI/CD-конвейеры (GitLab CI, Jenkins, GitHub Actions).
Человеческая инфраструктура
Невидимый, но критически важный слой:
- регламенты резервного копирования и аварийного восстановления;
- процедуры инцидент-менеджмента (ITIL-подход);
- документация архитектуры, схемы взаимодействия, runbook’и;
- команды поддержки, дежурства, ротации ответственности.
Инфраструктура — это то, на чём работают программы. Она должна быть:
- надёжной — минимизация простоев,
- масштабируемой — возможность роста под нагрузку,
- воспроизводимой — развёртывание одинаковой среды в разных местах (dev/stage/prod),
- наблюдаемой — возможность понять состояние системы в любой момент.
Простой пример: сайт example.com. Его инфраструктура включает — доменное имя (DNS), веб-сервер (Nginx), бэкенд (Node.js), базу данных (PostgreSQL), CDN для статики, систему сбора метрик и бэкапов. Всё это — инфраструктура, без которой сайт перестаёт существовать как сервис.
Аппаратное обеспечение
★ Аппаратное обеспечение (hardware) — физические компоненты компьютера и связанных с ним устройств. Это материальная основа, на которой работает всё программное обеспечение.
Основные группы аппаратного обеспечения:
Центральный процессор (CPU)
«Мозг» компьютера. Выполняет инструкции, управляет потоком данных, координирует работу остальных компонентов. Современные процессоры многоядерные — каждое ядро работает как отдельный вычислитель, что позволяет обрабатывать несколько задач одновременно.
Оперативная память (RAM)
Временное хранилище для данных и кода, с которыми работает процессор сейчас. Чем больше RAM — тем больше программ может быть загружено одновременно без замедления. Информация в RAM исчезает при отключении питания.
Постоянное хранилище
Устройства для долговременного хранения данных:
- жёсткие диски (HDD) — высокая ёмкость, невысокая скорость, механическая конструкция;
- твердотельные накопители (SSD) — высокая скорость, отсутствие движущихся частей, дороже за гигабайт;
- флеш-накопители, SD-карты — портативные решения.
Графический процессор (GPU)
Специализированный чип для обработки изображений, видео, параллельных вычислений. Изначально создан для рендеринга трёхмерной графики в играх, сейчас широко применяется в машинном обучении, научных расчётах, видеокодировании.
Устройства ввода и вывода
Средства взаимодействия с пользователем или внешним миром:
- ввод: клавиатура, мышь, сканер, микрофон, сенсорный экран;
- вывод: монитор, принтер, акустическая система, проектор.
Сетевые интерфейсы
Обеспечивают подключение к сетям:
- проводные (Ethernet-адаптеры — 1 Гбит/с, 10 Гбит/с);
- беспроводные (Wi-Fi, Bluetooth);
- специализированные (оптические трансиверы для дата-центров).
Материнская плата
Основная печатная плата, объединяющая все компоненты: разъёмы для CPU, RAM, дисков, карт расширения; чипсет, BIOS/UEFI; встроенные контроллеры (звук, сеть, USB).
Аппаратное обеспечение определяет физические границы возможностей:
- процессор задаёт максимальную скорость последовательных вычислений,
- оперативная память ограничивает объём одновременно обрабатываемых данных,
- диск влияет на время запуска программ и загрузки файлов,
- сеть определяет, насколько быстро можно обмениваться данными с внешними системами.
Программа не может «обойти» физические ограничения аппаратуры — она может лишь эффективнее их использовать.